From: Florian Müllner Date: Sat, 6 Sep 2014 14:30:59 +0000 (+0200) Subject: extensionSystem: Fix reloading on version-validation changes X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~2174 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=4d64bbcf7d3ead8c658e16db5742c03d590c61eb;p=gnome-shell.git extensionSystem: Fix reloading on version-validation changes The current code only works for enabled extensions, which means that extensions that were marked OUT_OF_DATE cannot be enabled without a restart when disabling the version check. Fix this by reloading all extensions while making sure to only enable any extensions when we're supposed to. https://bugzilla.gnome.org/show_bug.cgi?id=736185 --- diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index 3f0e1709c..11a75c65e 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -271,10 +271,17 @@ function onEnabledExtensionsChanged() { } function _onVersionValidationChanged() { + // we want to reload all extensions, but only enable + // extensions when allowed by the sessionMode, so + // temporarily disable them all + enabledExtensions = []; + for (let uuid in ExtensionUtils.extensions) + reloadExtension(ExtensionUtils.extensions[uuid]); + enabledExtensions = getEnabledExtensions(); + if (Main.sessionMode.allowExtensions) { enabledExtensions.forEach(function(uuid) { - if (ExtensionUtils.extensions[uuid]) - reloadExtension(ExtensionUtils.extensions[uuid]); + enableExtension(uuid); }); } }